int nextButtonDrawIndex(int i, int start, int end) {
  switch(i % 6) {
    case 0: return i + 1;
    case 1: return i / 6 == end? i + 1: i + 3;
    case 2: return i + 1;
    case 3: return i / 6 == start? -1: i - 4;
    case 4: return i + 3;
    case 5: return i - 2;
  }

  throw std::logic_error("this should not be reached");
}
